/*
 * utility.h
 *
 *  Created on: 15.05.2014
 *      Author: shveykin_ej
 */

#ifndef UTILITY_H_
#define UTILITY_H_


// Перекодирование 16 бит
#define hton16(a)           ((((a)>>8)	& 0x00ff)	|	(((a)<<8)	& 0xff00))
#define ntoh16(a)            hton16(a)
// Перекодирование 32 бит
#define hton32(a)			((((a)>>24) & 0x000000ff) | (((a)<<24) 	& 0xff000000) |\
							 (((a)>>8) 	& 0x0000ff00) |	(((a)<<8) 	& 0x00ff0000))
#define ntoh32(a)            hton32(a)

#define hton48(a)           ((((a)>>40)	& 0x0000000000FFll) | (((a)<<40)	& 0xFF0000000000ll) | 	\
							 (((a)>>24)	& 0x00000000FF00ll) | (((a)<<24)	& 0x00FF00000000ll)	|	\
							 (((a)>>8)	& 0x000000FF0000ll) | (((a)<<8)		& 0x0000FF000000ll))
#define ntoh48(a)            hton48(a)

//! Макрос формирует значение соответствующее заданным составляющим IP адреса
#define conv_ipv4(a1, a2, a3, a4)	((a1<<24)  | (a2<<16) | (a3<<8) | a4)
// *************************** ПРОТОТИПЫ ******************************************
alt_u8 memtst(alt_u8* mem1, alt_u8* mem2, alt_u32 num_byte);

alt_u32 memcpy_8(alt_u8* dst, alt_u8* src, alt_u32 num_byte);

alt_u32 memcpy_32(alt_u32* dst, alt_u32* src, alt_u32 num_byte);

alt_u32 memset_8(alt_u8* dst, alt_u8 data, alt_u32 num_byte);

alt_u32 memset_32(alt_u32* dst, alt_u32 data, alt_u32 num_byte);


#endif /* UTILITY_H_ */





